<?php

require_once("model/image.php");
require_once("model/imageDAO.php");
require_once("model/data.php");

class ViewPhoto {
	
	private $imgDAO;
	private $img;
	
	function __construct() {
		$this->imgDAO = new ImageDAO(".");
		
		global $data;
		$data = new Data();
		
		// Construit l'image courante
		// et l'ID courant 
		// NB un id peut être toute chaine de caractère !!
		if (isset($_GET["imgId"])) {
			$data->imgId = $_GET["imgId"];
			$this->img = $this->imgDAO->getImage($data->imgId);
		} else {
			// Pas d'image, se positionne sur la première
			$this->img = $this->imgDAO->getFirstImage();
			// Conserve son id pour définir l'état de l'interface
			$data->imgId = $this->img->getId();
		}
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Regarde si une taille pour l'image est connue
		if (isset($_GET["size"])) {
			$data->size = $_GET["size"];
		} else {
			# sinon place une valeur de taille par défaut
			$data->size = 480;
		}
		
		// Récupère la valeur du filtre de catégorie
		if (isset($_GET["filtreCategorie"]) && $_GET["filtreCategorie"] != "none") {
			$data->filtreCategorie = $_GET["filtreCategorie"];
		} else {
			$data->filtreCategorie = null;
		}
		
		// Récupère la liste des catégories
		$data->categorieList = $this->imgDAO->getCategories();
	}
	
	/************************************************************************************************
	 *                                         ACTIONS                                              *
	 ************************************************************************************************/
	function index() {
		global $data;
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function first() {
		global $data;
		
		// Calcule la première image
		$this->img = $this->imgDAO->getFirstImage($data->filtreCategorie);     
		// Attribue les nouvelles valeurs de data correspondant à cette image
		$data->imgId = $this->img->getId();
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function prev() {
		global $data;
		
		// Calcule l'image précedente
		$this->img = $this->imgDAO->getPrevImage($this->img, $data->filtreCategorie);
		// Attribue les nouvelles valeurs de data correspondant à cette image
		$data->imgId = $this->img->getId();
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function next() {
		global $data;
		
		// Calcule l'image suivante
		$this->img = $this->imgDAO->getNextImage($this->img, $data->filtreCategorie);
		// Attribue les nouvelles valeurs de data correspondant à cette image
		$data->imgId = $this->img->getId();
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function random() {
		global $data;
		
		// Calcule une image au hasard
		$this->img = $this->imgDAO->getRandomImage($data->filtreCategorie);
		// Attribue les nouvelles valeurs de data correspondant à cette image
		$data->imgId = $this->img->getId();
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function zoom() {
		global $data;
		
		// Calcule la nouvelle taille de l'image
		$zoom = $_GET['zoom'];
		$data->size *= $zoom;
		
		// Charge le menu
		$this->menu();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	
	function filtreCategorie() {
		global $data;
		
		// Récupère la liste des catégorie sélectionnées
		if (isset($_POST["filtreCategorie"])) {
			$data->filtreCategorie = $_POST["filtreCategorie"];
		}
		
		$this->first();
	}
	
	function editerCommentaire(){
		global $data;
		// Récupère le nouveau commentaire saisie
		if (isset($_POST["commentField"])) {
			$this->img->setCommentaire($_POST["commentField"]);
			$this->imgDAO->editCommentaire($this->img);
		}
		// Rechargement de l'objet depuis la base
		$this->img = $this->imgDAO->getImage($data->imgId);
		$data->imgId = $this->img->getId();
		$data->imgURL = $this->img->getURL();
		$data->categorie = $this->img->getCategorie();
		$data->commentaire = $this->img->getCommentaire();
		
		// Rechargement de la vue quand terminé
		// Charge le menu
		$this->menu();
		$data->content = "photoView.php";
		require_once("view/mainView.php");
	}
	/************************************************************************************************
	 *                                         UTILITAIRES                                          *
	 ************************************************************************************************/
	private function menu() {
		global $data;
		
		if ($data->filtreCategorie != null) {
			$cat = "&filtreCategorie=".$data->filtreCategorie;
		} else {
			$cat = "";
		}
		
		# Mise en place du menu
		$data->menu['Home']="index.php?controller=home&action=index".$cat;
		$data->menu['A propos']="index.php?controller=home&action=aPropos".$cat;
		$data->menu['First']="index.php?controller=viewPhoto&action=first&imgId=".$data->imgId."&size=".$data->size.$cat;
		$data->menu['Random']="index.php?controller=viewPhoto&action=random&imgId=".$data->imgId."&size=".$data->size.$cat;
		# Pour afficher plus d'image passe à une autre page
		$data->menu['More']="index.php?controller=viewPhotoMatrix&action=index&imgId=".$data->imgId.$cat;
		// Demande à calculer un zoom sur l'image
		$data->menu['Zoom +']="index.php?controller=viewPhoto&action=zoom&zoom=1.25&imgId=".$data->imgId."&size=".$data->size.$cat;
		// Demande à calculer un zoom sur l'image
		$data->menu['Zoom -']="index.php?controller=viewPhoto&action=zoom&zoom=0.75&imgId=".$data->imgId."&size=".$data->size.$cat;
		$data->menu['Upload de photos']="index.php?controller=uploadPhoto&action=index";
		$data->menu['Gestion des albums']="index.php?controller=gestionAlbums&action=index";
	}
}
?>
